/**
 * 
 */
package mm.back.service;

import java.util.List;

import mm.back.DetalleVentaDTO;
import mm.back.entity.DetalleVenta;
import mm.back.entity.Venta;
import mm.back.filtros.VentasFiltro;
import mm.exceptions.MMGenericException;

/**
 * @author PUSDERKIS
 *
 */
public interface VentasService {
	
	void registrarVenta(Venta venta) throws MMGenericException;
	
	/**
	 * Busca todas las ventas en base a un filtro de busqueda.
	 * @param filtro el filtro {@link VentasFiltro}.
	 * @return el listado de ventas.
	 * @throws MMGenericException en caso de error.
	 */
	List<Venta> buscarVentas(VentasFiltro filtro) throws MMGenericException;
	
	/**
	 * Busca una venta en base al id.
	 * @param idVenta el id de la venta.
	 * @return la venta.
	 * @throws MMGenericException en caso de error.
	 */
	Venta buscarVenta(Long idVenta) throws MMGenericException;
	
	/**
	 * Busca el detalle de una venta en base a su id.
	 * @param idVenta el id de la venta
	 * @throws MMGenericException en caso de error
	 */
	List<DetalleVenta> buscarDetalleVentas(Long idVenta) throws MMGenericException;
	
	/**
	 * registra la devolución de productos para una venta.
	 * @param idVenta
	 * @param detalleVentaDTO
	 * @throws MMGenericException
	 */
	void registrarDevolucion(Long idVenta, List<DetalleVentaDTO> detalleVentaDTO) throws MMGenericException;
}
